package com.lqian.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * Array与List的转换
 * Array 是一个数组、List 是一个集合
 */
public class TestDemo01_Array_List {

    public static void main(String[] args) {
      // 1、List 转 Array: list.toArray(T[] t) 、 for循环+list.get()
        List<String> list =  new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");

        //       String[] arrays = {"1","2","3"};
        ////        //初始化需要得到的数组
        ////        String[] array = new String[testList.size()];
        ////
        //////使用for循环得到数组
        ////        for(int i = 0; i < testList.size();i++){
        ////            array[i] = testList.get(i);
        ////        }

        //转化: toArray()： 返回Object[] 需要强制转换
               //但是强转过程中可能会出现ClassCastException
                //Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
                //因为String[] 并不是Object的子类
            //     toArray(T[] t)：
        //String[] objects = (String[]) list.toArray();异常
//        System.out.println(objects);异常
        // 推荐带泛型!    toArray(T[] t)：
        String[] strings = list.toArray(new String[list.size()]);
        System.out.println(Arrays.toString(strings));//[1, 2, 3]

        List testList = new ArrayList(){
            {add("aa");add("bb");add("cc");}
        };

        //数组 转List
        //需要转换的数组
        String[] arrays = new String[]{"a","b","c"};
        //初始化list
        List list2 = new ArrayList();

//使用for循环转换为list
        for(String str : arrays){
            list2.add(str);
        }

        //方法二、使用asList（）
        List list3 = new ArrayList(Arrays.asList(arrays));

        //方法三、使用Collections.addAll()
        List list4 = new ArrayList(arrays.length);
        Collections.addAll(list4,arrays);
        //     boolean result = false;
        //        for (T element : elements)
        //            result |= c.add(element);
        //        return result;
        //其实Collections.addAll()其实也是把数组中的元素迭代，然后挨个add到集合中

    }
}
